<?php

class InterfazComponent extends Component {

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
     * Funcion para complementar numero en listados ejemplo 1 -> 01
     * Esta Funcion recibe como parametros:
     * $entero: numero a completar
     * $largo:  cantidad de digitos a visualizar
     * Devuelve el numero ingresado con ceros a la izquierda dependiendo del
     * largo deseado de la cadena de salida.
     *
     * @param   int $entero
     * @param   int $largo
     * @return  string numero_formateado_ceros_izquierda
     * Ejemplo:
     *     echo $this->Interfaz->item(12,4);
     *     su salida sera 0012
     * */
    function item($entero = 0, $largo = 2) {
        // Limpiamos por si se encontraran errores de tipo en las variables
        $entero = (int) $entero;
        $largo = (int) $largo;
        $relleno = '';
        /*
         * Determinamos la cantidad de caracteres utilizados por $entero
         * Si este valor es mayor o igual que $largo, devolvemos el $entero
         * De lo contrario, rellenamos con ceros a la izquierda del número
         */
        if (strlen($entero) < $largo) {
            $relleno = str_repeat('0', $largo - strlen($entero));
        }
        return $relleno . $entero;
    }

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
      Funcion para convertir a formato de moneda
      Esta Funcion recibe como parametros:
      $numero: numero a convertir
      $cant:  cantidad de decimales por defecto 2
      $separadormiles: separador del formato en miles ejem: 1,263.00 - 1.263,00 por defecto "."
      $separadordecimales: separador del formato en miles ejem: 1,263.00 - 1.263,00 por defecto ","
      Ejemplo:
      echo $this->Interfaz->miles(123456,2,'.'); // devuelve  123.456,00
      echo $this->Interfaz->miles(123456,2,'',','); // devuelve  123456,00
      echo $this->Interfaz->miles(123456); // devuelve  123.456,00
      echo $this->Interfaz->miles(123456,2,',','.'); // devuelve  123,456.00

     * */
    function miles($numero, $cant = 2, $s2 = '.', $s1 = ',', $redondear = false) {
        //if($separador=='.'){$s1=',';$s2='.';}
        //else{$s1='.';$s2=',';}
        $montoFinal = number_format($numero, $cant, $s1, $s2);
        
        if($redondear)
            $montoFinal = number_format(round($numero), $cant, $s1, $s2);
        
        return $montoFinal;
    }

    public function navegador() {
        $navegador = strtolower($_SERVER['HTTP_USER_AGENT']);
        if (stristr($navegador, "msie"))
            return 1; //0;
        else
            return 1;
    }

    function id($id) {
        /*$id = base64_decode(base64_decode(base64_decode(base64_decode(base64_decode($id)))));
        return $id;*/
        $alpha_array = array('Y', 'D', 'U', 'R', 'P', 'S', 'B', 'M', 'A', 'T', 'H');
        $idDecodificado = base64_decode($id);
        list($idDecodificado, $letter) = split("\+", $idDecodificado);

        for ($i = 0; $i < count($alpha_array); $i++) {
            if ($alpha_array[$i] == $letter)
                break;
        }

        for ($j = 1; $j <= 5; $j++) {
            $idDecodificado = base64_decode($idDecodificado);
        }
        $idDecodificado = preg_replace('/=/', '', $idDecodificado);
        return $idDecodificado;
    }

    function id_encode($id) {
        /*$id = base64_encode(base64_encode(base64_encode(base64_encode(base64_encode($id)))));
        return $id;*/
        $idCodificado = $id;
        $num = mt_rand(0, 10);

        for ($i = 1; $i <= 5; $i++) {
            $idCodificado = base64_encode($idCodificado);
        }

        $alpha_array = array('Y', 'D', 'U', 'R', 'P', 'S', 'B', 'M', 'A', 'T', 'H');
        $idCodificado = $idCodificado . "+" . $alpha_array[$num];
        $idCodificado = preg_replace('/=/', '', base64_encode($idCodificado));
        return $idCodificado;
    }
    
    function mayuscula($t) {
        return trim(addslashes(strtr(strtoupper($t), "àèìòùáéíóúçñäëïöü", "ÀÈÌÒÙÁÉÍÓÚÇÑÄËÏÖÜ")));
    }
    
    function clave($t) {
        return trim(addslashes(md5($t)));
    }

    function data($data) {
        $array = array();
        foreach ($data as $key => $value) {
            if ($key != 'id')
                $array[$key] = $this->mayuscula($value);
            else
                $array[$key] = $value;
        }
        return $array;
    }

    /* 
     *  echo $this->Interfaz->formatocedula('V-18070728',false);
        echo $this->Interfaz->formatocedula('V018070728');
     */
    function formatocedula($cedula,$guion=true) {
        if($guion)
            return substr($cedula, 0, 1) . "-" . str_pad(substr($cedula, 1),8,'0',0);
        else
            return substr($cedula, 0, 1) . str_pad(substr($cedula, 2),9,'0',0);
        
    }
    
    function formatofecha($fecha) {
        $fecha = explode(' ',$fecha);
        $fecha = explode('-',$fecha[0]);
        $fecha = $fecha[2].'-'.$fecha[1].'-'.$fecha[0];
        return $fecha;
    }
    
    /* 
     *  echo "<br />". $this->Interfaz->formatotelefono('0412-3427157',false);
        echo " --- ".$this->Interfaz->formatotelefono('04123427157');
     */
    function formatotelefono($tel,$guion=true) {
        if($guion) return substr($tel, 0, 4) . "-" . substr($tel, 4);
        else return substr($tel, 0, 4) . substr($tel, 5);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
      Funcion para convertir a formato de Postgres un Formato Moneda
      Esta Funcion recibe como parametros:
      $numero: numero a convertir en formato (2.165,48) o (2165,48)

      Ejemplo:
      echo $this->Interfaz->miles_postgres(1.234,56); // devuelve  1234.56
     * */
    function miles_postgres($numero) {
        return str_replace(',', '.', str_replace('.', '', $numero));
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
      Funcion calcular_edad
      Esta Funcion recibe como parametros:
      $fecha: fecha de nacimiento en formato Y-m-d
      Ejemplo:
      $this->Interfaz->calcular_edad('1980-01-01');
     * */
    public function calcular_edad($fecha = null) {
        $edad = 0;
        if (!empty($fecha)) {
            $edad = floor((time() - strtotime($fecha)) / 31556926);
        }
        return $edad;
    }
    
    function fechatime($fecha = null, $tipo = null) {
        $tipo = strtoupper($tipo);
        if ($tipo == null) {
            $val = explode(' ', $fecha);
            $value = explode('-', $val[0]);
            if (isset($value[2]) && isset($value[1]) && isset($value[0])) {
                $hora = explode('.', $val[1]);
                $hora = explode(':', $hora[0]);
                if ($hora[0] > 12) {
                    $hora[0] = ($hora[0] - 12);
                    $ampm = 'PM';
                } else {
                    $hora[0] = $hora[0];
                    $ampm = 'AM';
                }
                $ho = $this->item($hora[0], 2) . ':' . $hora[1] . ':' . $hora[2] . ' ' . $ampm;

                $value = $value[2] . '-' . $value[1] . '-' . $value[0] . ' - ' . $ho;
            }
        } else if ($tipo == 'H') {
            $val = explode(' ', $fecha);
            $value = explode('-', $val[0]);
            $hora = explode('.', $val[1]);
            $value = $hora[0];
        } else if ($tipo == 'F') {
            $val = explode(' ', $fecha);
            $value = explode('-', $val[0]);
            if (isset($value[2]) && isset($value[1]) && isset($value[0])) {
                $value = $value[2] . '-' . $value[1] . '-' . $value[0];
            }
        } else {
            $value = 'ERROR';
        }

        return $value;
    }

}
